www.gusucode.com > ROCKOA PHP协同办公OA办公系统 v2.0PHP源码程序 > ROCKOA PHP协同办公OA办公系统 v2.0/rockoa_v2.0/rockoa_v2.0/webrock/extjs/ux/form/DateTime.js

    /**
 * datetime时间面板,需要jquery的支持哦
 */
Ext.define('Ext.ux.form.DateTime', {
    extend: 'Ext.form.field.Date',
    alias: 'widget.datetimefield',
	format:'Y-m-d H:i:00',
	timepicker:false,
	showToday:false,
	timeobj:{shi:false,fen:false,miao:false},
	onchange:function(){},
	editable:false,
	
	initComponent: function() {
        var me = this;
		if(me.format=='datetime')me.format='Y-m-d H:i:s';
        me.callParent();
    },
	
	onExpand:function(){
		var me = this,H='00',i='00',s='00';
		me.callParent(arguments);
		if(me.timepicker){
			me._initshowdaot();
		}
		if(me.timepicker || me.format.indexOf(':')<0)return;

		var sid = me.picker.eventEl.id;
		$('#'+sid+'').after('<div style="padding:5px 2px" id="timeshow_'+sid+'"></div>');
		var listeners = function(lx){
			return {
				focus:function(a,e){
					me._focusxlshow(a,e,lx);
				}
			};
		}
		me.timepicker = Ext.create('Ext.container.Container', {
			layout: {type: 'hbox',align: 'middle'},
			renderTo: 'timeshow_'+sid+'',
			defaults: {
				xtype: 'textfield',
				minValue:0,
				minValues:0,
				margin:'0 2',
				hideLabel:true,readOnly:true
			},
			items: [{
				xtype:'tbtext',text:'&nbsp;时间'
			},{
				maxValue:23,maxValues:23,flex:1,value:H,disabled:me.format.indexOf('H')<0,itemId:'shi',listeners:listeners('shi')
			},{
				maxValue:59,maxValues:59,flex:1,value:i,disabled:me.format.indexOf('i')<0,itemId:'fen',listeners:listeners('fen')
			},{
				maxValue:59,maxValues:59,flex:1,value:s,disabled:me.format.indexOf('s')<0,itemId:'miao',listeners:listeners('miao')
			},{
				xtype:'splitbutton',handler:function(){me._selectok()},text:'确定',menu:[{
					text:'现在',handler:function(){me._selectnow()}
				}]
			}]
		});
		me.timeobj = {
			shi:me.timepicker.child('#shi'),
			fen:me.timepicker.child('#fen'),
			miao:me.timepicker.child('#miao')
		};
		me._initshowdaot();
	},
	_initshowdaot:function(){
		var me = this;
		var val = me.getValue();
		if(!Ext.isDate(val))val=new Date();
		me._initsehtval(val);
		me._changeminmax(val,'shi');
		me._changeminmax(val,'fen');
	},
	_temdtf:'Y-m-d',
	_temdtfs:'Y-m-d-H-i-s',
	_changeminmax:function(val, lx, zhs){
		var me = this;
		me._removehisv();
		var _temdtf = 'Y-m-d',oi=3;
		if(lx=='fen'){
			_temdtf = 'Y-m-d-H';
			oi=4;
		}
		var min = me.minValue,mins,h,i,s,
			max = me.maxValue,maxs,
			dt  = Ext.Date.format(val,_temdtf);
		if(zhs==1)dt=val;	
		if(min){
			h=0;
			if(Ext.Date.format(min,_temdtf) == dt){
				mins = Ext.Date.format(min, me._temdtfs).split('-');
				h = parseFloat(mins[oi]);
			}
			if(me.timeobj[lx])me.timeobj[lx].minValue = h;
		}
		if(max){
			h=0;
			if(Ext.Date.format(max,_temdtf) == dt){
				maxs = Ext.Date.format(max, me._temdtfs).split('-');
				h = parseFloat(maxs[oi]);
			}
			if(me.timeobj[lx])me.timeobj[lx].maxValue = h;
		}
	},
	_xy10:function(s){
		var s1=''+s+'';if(s1.length<2)s1='0'+s+'';return s1;
	},
	_getvalue:function(d, lxs){
		var me = this,d1;
		d1 = Ext.Date.format(d, me._temdtf).split('-'),lx = ''+me.format+'';
		if(lxs)lx=lxs;
		var s = lx;
		s	= s.replace('Y', d1[0]);
		s	= s.replace('m', d1[1]);
		s	= s.replace('d', d1[2]);
		if(me.timeobj.shi)s	= s.replace('H', me._xy10(me.timeobj.shi.getValue()));
		if(me.timeobj.fen)s	= s.replace('i', me._xy10(me.timeobj.fen.getValue()));
		if(me.timeobj.miao)s= s.replace('s', me._xy10(me.timeobj.miao.getValue()));
		return s;
	},
	_selectd: new Date(),
	onSelect: function(m, d){
		this._changeminmax(d,'shi');
		this._changeminmax(d,'fen');
		this._selectd = d;
    },
	_selectnow:function(){
		var me = this;
		me._selectd = new Date();
		me._initsehtval(me._selectd);
		me._selectok();
	},
	_initsehtval:function(date){
		var me = this;
		var d1 = Ext.Date.format(date, me._temdtfs).split('-');
		if(me.timeobj.shi)me.timeobj.shi.setValue(d1[3]);
		if(me.timeobj.fen)me.timeobj.fen.setValue(d1[4]);
		if(me.timeobj.miao)me.timeobj.miao.setValue(d1[5]);
	},
	_selectok:function(){
		var me  = this,
			d	= me._selectd;
		d = me._getvalue(d);
		me.setValue(d);
		me.fireEvent('select', me, d);
		if(me._miaoshid)$('#'+me._miaoshid+'').remove();
		me.onchange(me, d);
		me.collapse();
	},
	_removehisv:function(){
		var sid = this.picker.getEl().id+'_seshowid';
		$('#'+sid+'').remove();	
	},
	_focusxlshow:function(a, e, lx){
		var me 	= this,i,s1,
			val	= a.value,
			sid = me.picker.getEl().id+'_seshowid',ai,s1;
			
		me._miaoshid = sid;	
		$('#'+sid+'').remove();	
		var s = '<div id="'+sid+'" style="border:1px #cccccc solid;left:2px;bottom:30px;position:absolute;padding:5px;border:1px #cccccc solid;background-color:#ffffff; text-align:left;z-index:2;box-shadow:0px 0px 2px #cccccc;">';
		for(i=a.minValues;i<=a.maxValues;i++){
			ai	= this._xy10(i);
			s1	= '<a onclick="return false" lx="'+lx+'" style="margin:3px">'+ai+'</a>';
			if(i<a.minValue || i>a.maxValue)s1='<span style="color:#cccccc;margin:3px">'+ai+'</span>';
			if(ai==val)s1='<span style="color:#ff0000;margin:3px">'+ai+'</span>';
			s+= s1;
			if((i+1)%8==0)s+='<br>';
		}
		s+='</div>';
		$('#'+me.picker.getEl().id).append(s);
		$('#'+sid+'').find('a').click(function(){
			me._changehowvei(this);
		});
		$('#'+sid+'').click(function(){
			$(this).remove();
		});
	},
	_changehowvei:function(o1){
		var o	= $(o1),
			x	= o.text(),
			lx	= $(o1).attr('lx'),
			me  = this;
		me.timeobj[lx].setValue(x);
		me._removehisv();
		if(lx=='shi'){
			me._changeminmax(me._getvalue(me._selectd, 'Y-m-d-H'),'fen', 1);
		}
	}
});